<? /*
NEW-FRAMEWORK e' stato creato da Norman Russo sotto licenza Apache 2.0

Data di rilascio: Giugno 2011

Versione: 0.1b

Indice:

- Conversione
-- Ore in secondi
-- Giorni in secondi
-- Mesi in secondi
-- Anni in secondi

- Redirect
-- Indirizzo (url o pagina)

- Url
-- Provenienza (nome pagina di provenienza)
-- Nome Pagina (post htaccess)
-- Nome Pagina Originale (pre htaccess)
-- Titoli delle pagine (tutto tra due apici, il primo valore è il titolo di default, poi nomepagina,titolo,nomepagina2,titolo2....)

- Cookie
-- Salva
-- Cancella

- Headersent (risolve il problema "Header already Sent")
-- Inizio (da posizionare all'inizio di qualsiasi riga di codice, implementazione di questo file escluso)
-- Fine (da posizionare alla fine di tutto il codice)

- Array
-- Presente (controlla se un valore è presente dentro un array; se lo trova ritorna TRUE)
-- Conta (ritorna il numero di elementi nell'array)

- Stringhe
-- Escape
-- Unescape

- Numeri
-- Pari (ritorna TRUE se il numero è pari)
-- Numero (ritorna TRUE se il valore passato è un numero)

- Database
-- Connessione (nome utente, password, ip mysql, nome database)
-- Select (query al database: nome tabella, campi, condizioni, limit)
-- Insert
-- Delete
-- Conta (numero elementi dentro tabella da query passata)
-

- Date
-- Nomegiorno (ritorna il nome del giorno in italiano, UTF-8 e con iniziale maiuscola)
-- Ora (estrae l'ora da data; secondo parametro opzionale, 1 per visualizzare secondi, default 0)
-- Giorno (estrae giorno da data in doppia cifra; senza parametri giorno attuale)
-- Mese (estrae mese da data in doppia cifra; senza parametri mese attuale)
-- Anno (estrae anno da data; senza parametri anno attuale; secondo parametro: 2=doppia cifra, 4=quattro cifre )
-- Datetotime (converte date in timestamp, timestamp incluso)

*/


/* Inizio Conversione */
class Nconverti {
	
	// Conversione in secondi
	public function oretosecondi($ore){
		$risultato = 3600 * $ore;
		return $risultato;
	}
	public function giornitosecondi($giorni){
		$risultato = $this->oretosecondi(24) * $giorni;
		return $risultato;
	}
	public function mesitosecondi($mesi){
		$risultato = $this->giornitosecondi(30) * $mesi;
		return $risultato;
	}
	public function annitosecondi($anni){
		$risultato = $this->giornitosecondi(365) * $anni;
		return $risultato;
	}
	
	
}
/* Fine conversione */


/* Inizio Redirect */
class Nredirect{
	
	// Redirect da indirizzo
	public function indirizzo($dove){
		header("location:".$dove);
	}

}
/* Fine Redirect */


/* Inizio Url */
class Nurl {
	
	// Pagina di provenienza
	public function provenienza(){
		$url=basename($_SERVER["HTTP_REFERER"]);
		return $url;
	}
	
	// Nome del file attuale (non tiene conto di htaccess)
	public function nomepaginaoriginale(){
		$url=basename($_SERVER['PHP_SELF']);
		return $url;
	}
	
	//Nome della pagina attuale (tiene conto di htaccess)
	public function nomepagina(){
		$url=basename($_SERVER['REQUEST_URI']);
		return $url;
	}
	
	// Titoli delle pagine
	public function title($titoli){
		$titoli=explode(",",$titoli);
		$pagina=$this->nomepaginaoriginale();

		$chiave=array_search($pagina, $titoli);
		if($chiave!=FALSE){
			$titolo=$titoli[($chiave+1)];
		}else{
			$titolo=$titoli[0];
		}
		return $titolo;		
	}

}

/* Fine Url */


/* Inizio Cookie */
class Ncookie{
	
	// Salva nome, contenuto e durata, in ore, in un cookie
	public function salva($nome,$contenuto,$durata=24){
		$Nconverti=new Nconverti();
		setcookie($nome,$contenuto,time()+$Nconverti->oretosecondi($durata));
	}	
	
	// Cancella cookie da nome
	public function cancella($nome){
		setcookie($nome,"",time()-10);
	}
	
}

/* Fine Cookie */


/* Inizio Problema Header Already Sent */
class Nheadersent{
	
	//Da inserire alla riga 1 del codice (prima di qualsiasi cosa)
	public function inizio(){
		return ob_start();
	}
	
	//Da inserire alla fine di tutto il codice
	public function fine(){
		return ob_end_flush();;
	}
}

/* Fine Problema Header Already Sent */


/* Inizio Array */
class Narray{
	
	
	//Controllare se un valore è presente in un array
	public function presente($valore,$array) {
		if(in_array($valore,$array)){
			return TRUE;
		}else{
			return FALSE;
		}
	}
	
	//Converte un array in stringa
	public function arraytostring($array,$delimitatore=','){
		return explode($delimitatore,$array);
	}
	
	
	//Modificare elemento dentro array
	function sostituisci($array,$valore,$nuovovalore)
	{
	   // verifico che il valore sia compreso nell'array
		if(in_array($valore,$array)){
			// modifico il valore tramite la chiave recuperata usando array_search
			$array[array_search($valore,$array)]=$nuovovalore; 
		
			// restituisco l'array dopo averlo re-indicizzato
			return array_values($array);
		}else{
			// se non trovo corrispondenze restituisco l'array così com'è
			return $array;
	   }
	}
	
	
	//Cancellare elemento dentro array
	function elimina($array,$valore){
		// verifico che il valore sia compreso nell'array
		if(in_array($valore,$array)){
			// rimuovo il valore passando ad unset la chiave recuperata usando array_search
			unset($arr[array_search($valore,$array)]); 
			
			// restituisco l'array dopo averlo re-indicizzato
			return array_values($array);
		}else{
			// se non trovo corrispondenze restituisco l'array così com'è
			return $array;
	   }
	}
	
	
	// Ordina un array
	public function ordina($array){
		return sort($array);
	}
	
	//Rimuove valori doppi nell'array
	public function rimuovidoppi($array){
		return array_unique($array);
	}
	
	//Estrae tutte le chiavi di un array
	public function chiavi($array){
		return array_keys($array);
	}
	
	//Estrae tutti i valori di un array
	public function valori($array){
		return array_values($array);
	}
	
	//Mescola i valori di un array
	public function mescola($array){
		return shuffle($array);
	}
	
	//Conta gli elementi in un array
	public function conta($array){
		return count($array);
	}

}
/* Fine Array */


/* Inizio Stringhe */

class Nstringhe{
	
	//Risolve il problema degli apostrofi che creano problemi
	public function escape($stringa){
		return addslashes($stringa);
	}
	
	//Ripristina la stringa eliminando gli slash aggiunti dalla funzione escape
	public function unescape($stringa){
		return stripslashes($stringa);
	}
	
	
}


/* Fine Stringhe */


/* Inizio Numeri */

class Nnumeri{
	
	public function pari($numero="Un campo vuoto "){
		
		//Controllo se è un numero
		if(!$this->numero($numero)){
			echo '"'.$numero.'" non è un numero!';
			exit();
		}
		
		// Controllo se il numero è pari o dispari 
		if ($numero % 2 == 0){
			return TRUE; 
		}else{
			return FALSE;
		}
	}
	
	public function numero($numero){
		if(is_numeric($numero)){
			return TRUE;
		}else{
			return FALSE;
		}
	}
	
}


/* Fine Numeri */


/* Inizio DB */

class Ndb{
	
	//Connessione al database
	public function connessione($user,$password,$hostip,$nomedb){
		$conn=mysql_connect($hostip,$user,$password) or die("Errore nella connessione a MySql: ".$hostip);
		$conndb=mysql_select_db($nomedb,$conn) or die("Errore nella connessione al Database ".$nomedb);
	}
	
	//Estrarre dati dal database
	public function select($nometabella,$campi,$condizioni="",$order="",$limit=""){
		if($condizioni!='') $condizioni=" WHERE ".$condizioni;
		if($limit!='') $limit=" LIMIT ".$limit;
		if($order!='') $order=" ORDER BY ".$order;
		
		$query=mysql_query("SELECT ".$campi." FROM ".$nometabella.$condizioni.$order.$limit) or die ("Errore query per la tabella ".$nometabella);
		return $query;
	}
	
	
	//Inserire record con dati nel database
	public function insert($nometabella,$valori){
		$Nnumeri=new Nnumeri();
		$i=0;
		$n=0;
		$valori=explode(",",$valori);
		$query='INSERT INTO '.$nometabella.' (';
		foreach($valori as $v){
			if($Nnumeri->pari($i)){
				if($i!=0) $query.=',';
				$query.= $v;
			}
			$i++;
		}
		$query.= ') VALUES (';
		foreach($valori as $v){
			if($Nnumeri->pari($n)==FALSE){
				if($n!=1) $query.=',';
				if(!is_numeric($v)) $query.="'";
				$query.= $v;
				if(!is_numeric($v)) $query.="'";
			}
			$n++;
		}
		$query.= ')';
		mysql_query($query) or die ("Errore query insert per tabella ".$nometabella." con errore:<br><br>".mysql_error());
	}
	
	
	//Cancellare record in database da condizione (anche multiple)
	public function delete($nometabella,$condizioni,$AND_OR = 'AND'){
		$Nnumeri=new Nnumeri();
		$condizioni=explode(",",$condizioni);
		$cond="";
		$i=0;
		$n=0;
		foreach($condizioni as $c){
			if($Nnumeri->pari($i)){
				if($i!=0) $cond.=' '.$AND_OR.' ';
				$cond.= $c;
			}else{
				if(!is_numeric($c)) $cond.="'";
				$cond.= $c;
				if(!is_numeric($c)) $cond.="'";
			}
			$i++;
		}
		mysql_query("DELETE FROM ".$nometabella." WHERE ".$cond) or die ("Errore nella cancellazione del record dalla tabella ".$nometabella." con errore <br><br>".mysql_error());
	}
	
	
	//Conta elementi nel database da query
	public function conta($query){
		return mysql_num_rows($query);
	}
	
	
	
}

/* Fine DB */


/* Date */

class Ndate{
	
	//Ritorna il nome del giorno in Italiano dalla data passata
	public function	nomegiorno($data=""){
		if($data=="")$data=time();
		$data=$this->datetotime($data);
		$data = date("w",$data);
		$giorni = array( "Domenica", "Luned&igrave;", "Marted&igrave;", "Mercoled&igrave;", "Gioved&igrave;", "Venerd&igrave;", "Sabato" );
		return $giorni[$data];
	}
	
	//Ritorna l'ora da una data passata o attuale. Scelta se vedere i secondi o meno
	public function	ora($data="",$secondi=0){
		if($data=="")$data=time();
		$data=$this->datetotime($data);
		$data = date("H:i".($secondi==1?':s':""),$data);
		return $data;
	}

	
	public function	giorno($data=""){
		if($data=="")$data=time();
		$data=$this->datetotime($data);
		$data = date("d",$data);
		return $data;
	}
	
	public function	mese($data=""){
		if($data=="")$data=time();
		$data=$this->datetotime($data);
		$data = date("m",$data);
		return $data;
	}
	
	public function	anno($data="",$lunghezza=4){
		if($data=="")$data=time();
		$data=$this->datetotime($data);
		$data = date(($lunghezza=='2'?'y':'Y'),$data);
		return $data;
	}
	
	//Ritorna il timestamp di qualsiasi data, anche timestamp
	public function datetotime($date){
		if(ereg('[0-9]',$date)){
			$date=$date;
		}else{
			$date=strtotime($date);
		}
		return $date;
	}
	
	
}


/* Fine Date */







/* Inizializzazione classi
   Togliere il commento seguente per inizializzare tutte le classi o spostare fuori dal commento le singole classi da inizializzare.
   I nomi delle variabili di inizalizzazione a cui sono associate le relative classi sono gli stessi (es. Classe Nconverti sarà $Nconverti)
   */
   
/*
$Nconverti=new Nconverti();
$Nredirect=new Nredirect();
$Nurl=new Nurl();
$Ncookie=new Ncookie();
$Nheadersent=new Nheadersent();
$Narray=new Narray();
$Nstringhe=new Nstringhe();
$Nnumeri=new Nnumeri();
$Ndb=new Ndb();
$Ndate=new Ndate();

*/

/* Fine Inizializzazione classi */

?>

<!--NEW-FRAMEWORK e' stato creato da Norman Russo sotto licenza Apache 2.0-->


<!--
*-*-*-*-*-*- Libreria jQuery per implementazione chiamate asincrone e altre funzioni ajax-jquery -*-*-*-*-*-*
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
-->